13
. MODOS DE DIRECCIONAMIENTO DE DATOS
Existen varios modos de direccionamiento para acceder a cualquiera de las posiciones de datos:
Direccionamiento directo
Direccionamiento indirecto
Direccionamiento indexado
Direccionamiento inmediato
Direccionamiento de bit
Direccionamiento directo: La posición de memoria con la que se trabaja viene directamente definida en el código de la instrucción.
mowf TMR0
14
. MODOS DE DIRECCIONAMIENTO DE DATOS
Direccionamiento indirecto: La posición de memoria con la que se trabaja viene definida por el contenido del registro FSR (Posición 04h, 84h), es decir, el registro FSR actúa como puntero de la posición de memoria con la que se pretende operar.
movwf INDF
Direccionamiento indexado: Se utiliza el PC, concretamente el PCL para direccionar.
addwf PCL,F
Direccionamiento inmediato: El valor del dato inmediato lo contiene el código de operación y se carga en el registro. iorlw K
Direccionamiento de BIT: La dirección del dato es un bit. Bcf STATUS,RP0
15
. MODOS DE DIRECCIONAMIENTO DE LA MEMORIA DE DATOS (Cont.)
7 bits para direccionar
la RAM
(9 bits)*
Dir. Indirecto
7 bits
(8 bits)*
Dir. Directo: 7 bits . Con los bits STATUS (RP1 y RP0)
se obtiene el banco
(X bits)* en otros PIC de la GAMA
16
. MODOS DE DIRECCIONAMIENTO DE LA MEMORIA DE DATOS (Cont.)
Tanto para el direccionamiento directo como el indirecto la dirección completa (7 bits) no se puede obtener del código de la operación (5 bits) o del registro FSR (7 bits).
Para direccionamiento directo, la dirección a operar se obtiene completando la dirección incluida en el código de la instrucción (posición en el banco) con los bits RP1:RP0 del registro STATUS (selección de banco).
Para direccionamiento indirecto, la dirección se obtiene completando el contenido del registro FSR (posición en el banco) con el bit IRP del registro STATUS y el bit de mayor peso del FSR (selección del banco). [El PIC16F84 no utiliza el bit IRP -solo 2 bancos-].
17
. MODOS DE DIRECCIONAMIENTO INDIRECTO: INDF y FSR
EL DIRECCIONANMIENTO INDIRECTO UTILIZA EL INDF, NO ES UN REGISTRO FÍSICO. DIRECCIONANDO INDF SE DIRECCIONA REALMENTE EL REGISTRO CUYA DIRECCIÓN CONSTA EN EL REGISTRO FSR. El direccionamiento indirecto es muy útil para el procesamiento de posiciones consecutivas de memoria o para el direccionamiento de datos en subrutinas.
REGISTRO POSICIÓN 05h CONTIENE 10h
REGISTRO POSICIÓN 06h CONTIENE 0Ah
CARGA DE 05h EN EL REGISTRO FSR
LECTURA DE INDF DA UN VALOR DE 10h
INCREMENTAR EL CONTENIDO DE FSR (FRS=06h)
LECTURA DE INDF DA UN VALOR DE 0Ah
18
INDF y EECON2 son utilizados por otros registros
. REGISTROS ESPECIALES
19
CARRY (bit 0): bit de desbordamiento. Este bit se pone a "1" cuando la operación anterior ha rebasado la capacidad de un byte.
DC (digit carry) (bit 1): lo mismo que el anterior pero esta vez nos avisa si el número no cabe en cuatro bits.
Z (zero) (bit 2): Se pone a "1" si la operación anterior ha sido cero. Y pasa a "0" si la operación anterior no ha sido cero.
PD (Power – Down bit) (bit3): se pone a "0" después de ejecutar la instrucción SLEEP*, se pone a "1" después de ejecutar la instrucción CLRWDT o después de un power-up.
TO (Timer Up) (bit4): se pone a "0" cuando se acaba el tiempo del WATCHDOG, Se pone a "1" después de ejecutar las instrucciones, CLRWDT o SLEEP o después de un power-up.
RP0 y RP1 (selección de banco) (bit 5 y 6): Como el PIC16F84 solo tiene dos bancos de memoria el RP1 no se usa para nada, la selección del banco se hace mediante RP0 (BIT 5), si está a "0" nos encontramos en el banco 0, y si está a "1" nos encontramos en el banco 1.
IRP (bit 7): En este PIC no se usa para nada.
. REGISTROS ESPECIALES: STATUS REGISTER (Address 03h,83h)
20
. REGISTROS ESPECIALES: PUERTOS ENTRADA/SALIDA
(Gp:) RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0/INT0
(Gp:) RA4/TOCK1
RA3
RA2
RA1
RA0
Puerto A: 5 bits Puerto B: 8 bits
Definición IN-OUT por TRIS f
Nivel IN-OUT por PORT f
BSF STATUS,RP0 BANCO 1
Para trabajar con TRIS f
BCF STATUS,RP0 BANCO 0
Para trabajar con PORT f
21
. REGISTROS ESPECIALES: PUERTOS ENTRADA/SALIDA
Definición IN-OUT por TRIS f
Salida: 0
Entrada: 1
Nivel IN-OUT por PORT f
Guardar el contenido del Puerto en W
22
Puertos de entrada/salida
Definición IN-OUT por TRIS f
Salida: 0
Entrada: 1
BSF Status, RP0 ;Banco 1
CLRF TRISA ;Puerto A OUT
MOVLW b'11111111' ;Puerto B IN
MOVWF TRISB
BCF Status, RP0 ;Banco 0
MOVLW b'xxxxxxxx'
MOVWF TRISf
(Gp:) Nivel IN-OUT por PORT f
Guardar el contenido del Puerto en W
(Gp:) ;SI PUERTO f ES DE SALIDA
MOVLW b'01010101' ;Guarda en W el valor
MOVWF PORTB ;Lo envía a la salida
; SI PUERTO f ES DE ENTRADA
MOVF PORTB,W ;Guarda los datos en W
BSF TRISf,x
BCF TRISf,x
23
. REGISTROS ESPECIALES: PUERTOS ENTRADA/SALIDA
PORT B: resistencias de PULL-UP conectadas
Se habilitan o Deshabilitan todas a la vez por registro: OPTION_REG
BSF OPTION_REG,RBPU
BCF OPTION_REG,RBPU
Si el puerto se define como SALIDA, las resistencias NO ACTUAN
PORT A: El pin RA4/TOCKI es un COLECTOR ABIERTO
– Si se utiliza de SALIDA: Resistencia EXTERNA de Pull-up
– Como ENTRADA: puede ser utilizada como Trigger-Schmitt
(Gp:) Vcc
24
. SEGÚN FUNCIONALIDAD
DATA SHEET
25
. SEGÚN FUNCIONALIDAD
26
. SEGÚN FUNCIONALIDAD
Página anterior | Volver al principio del trabajo | Página siguiente |